// 定义方块的颜色数组
var squareColor = ["#FF6688", "#00FF00", "#3399FF", "#FFDAB9", "blueviolet"];
var repeatColor_count = 0; // 记录重复颜色的数量

// 方块对象构造函数
var squareObj = function() {
    this.x = []; // 方块的x坐标数组
    this.y = []; // 方块的y坐标数组
    this.w = []; // 方块的宽度数组
    this.h = []; // 方块的高度数组
    this.color = []; // 方块的颜色数组
    this.isLive = []; // 方块是否存活的布尔值数组
}

// 设置方块对象的元素数量
squareObj.prototype.num = 12;

// 初始化方块对象
squareObj.prototype.init = function() {
    for (var i = 0; i < this.num; i++) {
        // 随机选择颜色
        this.color[i] = squareColor[Math.floor(Math.random() * squareColor.length)];
        if (i == 0) {
            // 第一个方块的x坐标设置为0
            this.x[i] = 0;
            // 检查颜色是否重复
            if (this.color[i] == this.color[this.num - 1]) {
                repeatColor_count++;
            } else {
                repeatColor_count = 0;
            }
            // 如果颜色重复超过一次，选择不同的颜色
            if (repeatColor_count > 1) {
                this.color[i] = squareColor[squareColor.indexOf(this.color[this.num - 1]) - 1];
            }
        } else {
            // 其他方块的x坐标基于前一个方块的位置生成
            this.x[i] = this.x[i - 1] + this.w[i - 1] + 1;
            // 检查颜色是否重复
            if (this.color[i] == this.color[i - 1]) {
                repeatColor_count++;
            } else {
                repeatColor_count = 0;
            }
            // 如果颜色重复超过一次，选择不同的颜色
            if (repeatColor_count > 1) {
                this.color[i] = squareColor[squareColor.indexOf(this.color[i]) + 1];
            }
        }
        // 随机生成高度和宽度
        this.h[i] = canHeight * 0.3 + canHeight * 0.25 * Math.random();
        this.w[i] = canWidth * 0.15 + canWidth * 0.06 * Math.random();
        this.y[i] = canHeight - this.h[i]; // 设置y坐标
        this.isLive[i] = true; // 设置方块为存活状态
    }
}

// 生成新的方块元素
squareObj.prototype.squareBorn = function(i) {
    var maxX = 0;
    var maxI = 0;
    // 找到最右边的方块
    for (var i = 0; i < this.num; i++) {
        if (this.x[i] > maxX) {
            maxX = this.x[i];
            maxI = i;
        }
    }
    // 生成新的方块
    for (var i = 0; i < this.num; i++) {
        if (!this.isLive[i]) {
            // 根据位置生成新的方块
            if (i == 0 && this.isLive[this.num - 1]) {
                // 第一个方块的处理
                this.x[i] = this.x[maxI] + this.w[maxI] + 1;
                // 随机生成高度和宽度
                this.h[i] = canHeight * 0.25 + canHeight * 0.35 * Math.random();
                this.w[i] = canWidth * 0.14 + canWidth * 0.1 * Math.random();
                this.y[i] = canHeight - this.h[i];
                // 随机选择颜色
                this.color[i] = squareColor[Math.floor(Math.random() * 3)];
                // 检查颜色是否重复
                if (this.color[i] == this.color[this.num - 1]) {
                    repeatColor_count++;
                } else {
                    repeatColor_count = 0;
                }
                // 如果颜色重复超过一次，选择不同的颜色
                if (repeatColor_count > 1) {
                    this.color[i] = squareColor[squareColor.indexOf(this.color[this.num - 1]) - 1];
                }
                this.isLive[i] = true; // 设置方块为存活状态
            } else if (i > 0 && this.isLive[i - 1]) {
                // 其他方块的处理
                this.x[i] = this.x[maxI] + this.w[maxI] + 1;
                // 随机生成高度和宽度
                this.h[i] = canHeight * 0.25 + canHeight * 0.35 * Math.random();
                this.w[i] = canWidth * 0.14 + canWidth * 0.1 * Math.random();
                this.y[i] = canHeight - this.h[i];
                // 随机选择颜色
                this.color[i] = squareColor[Math.floor(Math.random() * 3)];
                // 检查颜色是否重复
                if (this.color[i] == this.color[i - 1]) {
                    repeatColor_count++;
                } else {
                    repeatColor_count = 0;
                }
                // 如果颜色重复超过一次，选择不同的颜色
                if (repeatColor_count > 1) {
                    this.color[i] = squareColor[squareColor.indexOf(this.color[i]) + 1];
                }
                this.isLive[i] = true; // 设置方块为存活状态
            }
            return;
        }
    }
}

// 绘制方块元素
squareObj.prototype.draw = function() {
    for (var i = 0; i < this.num; i++) {
        if (this.isLive[i]) {
            // 设置填充颜色
            ctx2.fillStyle = this.color[i] + "";
            // 绘制方块
            ctx2.beginPath();
            ctx2.fillRect(this.x[i], this.y[i], this.w[i], this.h[i]);
            ctx2.fill();
            ctx2.closePath();
            // 更新方块的x坐标
            this.x[i] -= totalSpeed;
        }
        // 如果方块移出画布，设置为不存活状态
        if (this.x[i] + this.w[i] < 0) {
            this.isLive[i] = false;
        }
    }
    // 调用生成新方块的方法
    this.squareBorn();
}